import { EPlayerState } from './enums';

/**
 * 玩家数据接口
 */
export interface IPlayerData {
    /** 玩家ID */
    id: string;
    /** 玩家昵称 */
    nickname: string;
    /** 玩家头像URL */
    avatarUrl: string;
    /** 玩家状态 */
    state: EPlayerState;
    /** 玩家分数 */
    score: number;
    /** 是否是房主 */
    isOwner: boolean;
    /** 手牌数据 */
    cards: ICardData[];
}

/**
 * 卡牌数据接口
 */
export interface ICardData {
    /** 卡牌ID */
    id: string;
    /** 卡牌图片URL */
    imageUrl: string;
    /** 是否被选中 */
    isSelected: boolean;
    /** 是否被使用 */
    isUsed: boolean;
}

/**
 * 房间数据接口
 */
export interface IRoomData {
    /** 房间ID */
    id: string;
    /** 房间名称 */
    name: string;
    /** 房主ID */
    ownerId: string;
    /** 当前人数 */
    currentPlayers: number;
    /** 最大人数 */
    maxPlayers: number;
    /** 房间状态 */
    state: string;
    /** 玩家列表 */
    players: IPlayerData[];
    /** 游戏配置 */
    config: {
        /** 胜利分数 */
        winScore: number;
        /** 回合时间限制 */
        turnTimeLimit: number;
    };
}

/**
 * 游戏回合数据接口
 */
export interface IRoundData {
    /** 回合数 */
    roundNumber: number;
    /** 当前玩家ID */
    currentPlayerId: string;
    /** 已出的牌 */
    playedCards: ICardData[];
    /** 描述词 */
    description: string;
    /** 投票记录 */
    votes: {
        /** 玩家ID */
        playerId: string;
        /** 投票的卡牌ID */
        cardId: string;
    }[];
} 